import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(12, 8))


def areaView(df):
	counts = df.groupby(by="地址").count()
	plt.title("各个地区车辆数量分析")
	# 设置x轴标签
	x = range(len(counts.index))
	plt.ylabel("数量")
	plt.bar(counts.index, counts["会员"], label="数量")
	plt.xticks(x, counts.index)
	plt.legend()
	plt.show()


def distanceView(df):
	# 分割数据为不同的区间
	divide = [0, 2, 4, 8, 10, 50, 1000]
	# 获取列数据
	cut = pd.cut(list(df["里程"]), divide)
	data = cut.describe()
	# 绘制扇形图
	plt.pie(x=data.freqs, labels=data.index, autopct="%1.2f%%", pctdistance=0.9, explode=(0, 0, 0, 0, 0.4, 0.2))
	plt.legend(loc='upper left')
	plt.title("里程占比分析（万里）")
	plt.show()


def timeView(df):
	plt.figure(figsize=(22, 8))
	counts = df.groupby(by="时间").count()  # 统计
	plt.title("各年份二手车数量")
	plt.plot(counts.index, counts["名称"], label="数量")
	plt.xticks(counts.index)
	plt.ylabel("数量")
	plt.show()


def priceView(df):
    # 定义价格区间
    bins = [0, 50000, 100000, 150000, 200000, 250000, 300000, float('inf')]
    labels = ['<5万', '5-10万', '10-15万', '15-20万', '20-25万', '25-30万', '>30万']

    # 将价格分组到定义的区间中
    df['价格区间'] = pd.cut(df['价格'], bins=bins, labels=labels)

    # 计算每个价格区间的频率
    data = df['价格区间'].value_counts(normalize=True).sort_index()

    # 创建 explode 列表，仅突出最后一个区间 (>30万)
    explode = [0] * len(data)  # 初始化所有为0
    if not data.empty:
        explode[-1] = 0.2  # 突出显示最后一个区间

    # 绘制饼图
    plt.figure(figsize=(8, 6))
    plt.pie(x=data, labels=data.index, autopct="%1.1f%%", explode=explode, startangle=90, pctdistance=0.85, shadow=True)

    # 添加标题
    plt.title("车辆价格分布")

    # 显示图表
    plt.show()
